package com.urbane.generator.model.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
@Schema(description = "代码生成请求参数")
public class GenGlobalRequest {

    /**
     * 输出目录
     * <p>
     * 生成的代码文件保存的目录路径
     * 如果为空，则使用默认的项目源码目录
     */
    @NotBlank(message = "输出目录不能为空")
    @Schema(
            description = "输出目录",
            example = "D:/code-generator",
            requiredMode = Schema.RequiredMode.REQUIRED
    )
    private String outputDir = System.getProperty("os.name").toLowerCase().contains("windows") ? "D://" : "/tmp";

    private boolean open = true;

    /**
     * 作者姓名
     * <p>
     * 生成的代码文件头部注释中会包含作者信息
     */
    @NotBlank(message = "作者姓名不能为空")
    @Schema(
            description = "作者姓名",
            example = "张三",
            requiredMode = Schema.RequiredMode.REQUIRED
    )
    private String author = "龙茶清欢";

    /**
     * 时间格式
     * <p>
     * 生成的代码文件头部注释中会包含时间信息
     */
    private String commentDate = "yyyy-MM-dd HH:mm:ss";

    /**
     * 是否生成 kotlin 代码，默认 false
     */
    private boolean kotlin;

    /**
     * 是否生成 swagger 代码，默认 false
     */
    private boolean swagger;

    /**
     * 是否生成 springdoc 代码，默认 false
     */
    private boolean springdoc;
}
